package com.education.ai.dao;

import com.education.ai.entity.StudentAnalysis;

import java.util.List;
import java.util.Optional;

/**
 * 学情分析数据访问接口
 */
public interface StudentAnalysisDao {
    
    /**
     * 查询所有学情分析
     */
    List<StudentAnalysis> findAll();
    
    /**
     * 根据ID查询学情分析
     */
    Optional<StudentAnalysis> findById(Long id);
    
    /**
     * 根据学生ID查询学情分析
     */
    List<StudentAnalysis> findByStudentId(String studentId);
    
    /**
     * 根据学生ID和学科查询学情分析
     */
    StudentAnalysis findByStudentIdAndSubject(String studentId, String subject);
    
    /**
     * 根据学生ID、学科和年级查询学情分析
     */
    StudentAnalysis findByStudentIdAndSubjectAndGrade(String studentId, String subject, String grade);
    
    /**
     * 查询某个知识掌握水平的学生分析列表
     */
    List<StudentAnalysis> findByKnowledgeLevel(String knowledgeLevel);
    
    /**
     * 根据学科查询学情分析
     */
    List<StudentAnalysis> findBySubject(String subject);
    
    /**
     * 根据年级查询学情分析
     */
    List<StudentAnalysis> findByGrade(String grade);
    
    /**
     * 根据学习风格查询学情分析
     */
    List<StudentAnalysis> findByLearningStyle(String learningStyle);
    
    /**
     * 查询包含特定薄弱点的学情分析
     */
    List<StudentAnalysis> findByWeakPoint(String weakPoint);
    
    /**
     * 保存学情分析
     */
    StudentAnalysis save(StudentAnalysis studentAnalysis);
    
    /**
     * 更新学情分析
     */
    boolean update(StudentAnalysis studentAnalysis);
    
    /**
     * 删除学情分析
     */
    boolean deleteById(Long id);
    
    /**
     * 查询学情分析总数
     */
    long count();
} 